import Vue from 'vue'
import axios from 'axios'
let data={
      baseURL: process.env.NODE_ENV === 'development'? '': '',
      contentType:'application/x-www-form-urlencoded',
      requestTimeout:10000
}
const CODE_MESSAGE = {
  200: '服务器成功返回请求数据',
  201: '新建或修改数据成功',
  202: '一个请求已经进入后台排队(异步任务)',
  204: '删除数据成功',
  400: '发出信息有误',
  401: '用户没有权限(令牌、用户名、密码错误)',
  403: '用户得到授权，但是访问是被禁止的',
  404: '访问资源不存在',
  406: '请求格式不可得',
  410: '请求资源被永久删除，且不会被看到',
  500: '服务器发生错误',
  502: '网关错误',
  503: '服务不可用，服务器暂时过载或维护',
  504: '网关超时',
}

const handleData = ({ config, data, status, statusText }) => {
  if (loadingInstance) loadingInstance.close()
  // 极个别情况，若将错误code设置为0时，防止识别成false影响判断
  // if (data[statusName] === 0) data[statusName] = '0'
  // 若data.code存在，覆盖默认code
  let code = data && data[statusName] ? data[statusName] : status
  // 若code属于操作正常code，则status修改为200
  if (codeVerificationArray.includes(code)) code = 200
  switch (code) {
    case 200:
      
    case 401:

    case 403:
 //
      break
  }
  // 异常处理
  // 若data.msg存在，覆盖默认提醒消息
  Vue.prototype.$baseMessage(message, 'error', false, 'message-error')
  return Promise.reject(message)
}

/**
 * @description axios初始化
 */
const instance = axios.create({
  baseURL,
  timeout: requestTimeout,
  headers: {
    'Content-Type': contentType,
  },
})

/**
 * @description axios请求拦截器
 */
instance.interceptors.request.use(
  (config) => {
    // 不规范写法 可根据setting.config.js tokenName配置随意自定义headers
    console.log(token, 123)
    if (token) {
   if (token) config.headers[tokenName] = token
    }
    // 规范写法 不可随意自定义
    // if (token) config.headers['Authorization'] = `Bearer ${token}`

 
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)

/**
 * @description axios响应拦截器
 */
instance.interceptors.response.use(
  (response) => handleData(response),
  (error) => {
    const { response } = error
    if (response === undefined) {
      Vue.prototype.$baseMessage(
        '未可知错误',
        'error'
      )
      return {}
    } else return handleData(response)
  }
)

export default instance
